package com.tbs.easyhomemoneyserver.service

import com.tbs.easyhomemoneyserver.DO.FlowTemplate
import com.tbs.easyhomemoneyserver.DO.FlowTemplateItem
import com.tbs.easyhomemoneyserver.form.FlowTemplateCreateForm
import com.tbs.easyhomemoneyserver.form.FlowTemplateItemSetForm
import com.tbs.easyhomemoneyserver.model.dto.FlowTemplateDTO

interface IFlowTemplateService {
    /**
     * 创建流程模板
     * @param createForm 创建表单
     * @return 创建结果
     */
    fun createTemplate(createForm: FlowTemplateCreateForm): FlowTemplate?

    /**
     * 设置模板项
     * @param setForm 设置表单
     * @return 修改后的模板结果
     * @throws Throwable 模板id不存在错误
     */
    @Throws(Throwable::class)
    fun setItemToTemplate(setForm: FlowTemplateItemSetForm): FlowTemplateDTO?

    /**
     * 根据当前模板节点id查询下一个模板项
     *
     * @param id
     * @return
     */
    fun findNextTemplateItemByNodeId(id: Long): FlowTemplateItem?


    /**
     *  根据主键查询模板
     *
     * @param id
     * @return
     */
    fun findTemplateById(id: Long): FlowTemplateDTO?


    /**
     * 根据主键删除模板
     *
     * @param templateId
     * @return
     */
    fun deleteTemplate(templateId: Long): Int
}
